package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Permission;

import java.util.List;
import java.util.Set;

/**
 * @desc 查询权限的基本信息
 * @Date 2020/10/20 16:27
 */
public interface PermissionDao {

    /**
     * 通过角色的id查出这个角色拥有的所有的权限
     * @return 所有的权限的几个
     */
    Set<Permission> findByRoleId(Integer roleId);

    /**
     * 通过模糊查询的条件查询数据库
     * @param queryString 模糊查询的条件
     * @return
     */
    Page<Permission> selectByCondition(String queryString);


    /**
     * 添加权限
     * @param permission 权限的详细信息
     */
    void add(Permission permission);

    /**
     * 通过id查询权限的详细信息
     * @param id
     * @return
     */
    Permission findById(Integer id);

    /**
     * 修改权限
     * @param permission 修改后的值
     */
    void update(Permission permission);

    /**
     * 通过权限的id查询使用该权限的用户的数量
     * @param id 权限的id
     * @return 数量
     */
    Long findCountByPerId(Integer id);

    /**
     * 通过id删除权限
     * @param id 要删除权限的id
     */
    void delete(Integer id);

    /**
     * 通过权限对象查询该权限是否已经存在
     * @param permission 权限的对象
     * @return 存在的所有的对象
     */
    List<Permission> findCountByPermission(Permission permission);

    List<Permission> findAll();

}
